//2956. 找到两个数组中的公共元素
class Solution {
public:
    vector<int> findIntersectionValues(vector<int>& nums1, vector<int>& nums2) {
        vector<int> ret(2);
        vector<int> hash1(101);
        vector<int> hash2(101);
        for(auto& e:nums1)
        {
            hash1[e]=1;
        }
        for(auto& e:nums2)
        {
            if(hash1[e]>0)
                ret[1]++;
        }
        for(auto& e:nums2)
        {
            hash2[e]=1;
        }
        for(auto& e:nums1)
        {
            if(hash2[e]>0)
                ret[0]++;
        }
        
        return ret;
    }
};

//2974. 最小数字游戏
class Solution {
public:
    vector<int> numberGame(vector<int>& nums) {
        // priority_queue<int,vector<int>,greater<int>> pq(nums.begin(),nums.end());
        // vector<int> arr;
        // while(!pq.empty())
        // {
        //     int A=pq.top();
        //     pq.pop();
        //     int B=pq.top();
        //     pq.pop();
        //     arr.push_back(B);
        //     arr.push_back(A);
        // // }
        // return arr;
        ranges::sort(nums);
        for(int i=0;i<nums.size()-1;i+=2)
            swap(nums[i],nums[i+1]);
        return nums;
    }
};

//3033. 修改矩阵
class Solution {
public:
    vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {
        
        for(int i=0;i<matrix[0].size();i++)
        {
            int Max=0;
            vector<int> idex;
            for(int j=0;j<matrix.size();j++)
            {
                // if(matrix[j][i]>max)
                //     max=matrix[j][i];
                Max=max(Max,matrix[j][i]);
                if(matrix[j][i]==-1)
                    idex.push_back(j);
            }
            for(auto& e:idex)
                matrix[e][i]=Max;
        }
        return matrix;
    }
};

//134. 加油站
class Solution {
public:
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
        int n=cost.size();
        vector<int> data(n);
        for(int i=0;i<n;i++)
        {
            data[i]=gas[i]-cost[i];
            cout<<data[i]<<' ';
        }
        //cout<<endl;
        for(int i=0;i<n;i++)
        {
            if(data[i]<0)
                continue;
            int cur=0,f_gas=0;
            while(cur!=n)
            {
                int j=(i+cur)%n;
                f_gas+=data[j];
                if(f_gas<0)
                {
                    break;
                }
                cur++;
            }

            
            if(cur==n)
                return i;
            else
                i=cur+i;
            // int tem=i+1;
            // while(tem<n&&data[i]==data[tem])
            //     tem++;
            // i=tem-1;
        }
        return -1;
    }
};